A computer network is a collection of interconnected computing devices that exchange data and share resources. In a packet-based network, such as the Internet, the computing devices communicate data by dividing the data into small blocks called packets. The packets are individually routed across the network from a source device to a destination device. The destination device extracts the data from the packets and assembles the data into its original form. Dividing the data into packets enables the source device to resend only those individual packets that may be lost during transmission.
Certain devices within the network, referred to as routers, maintain tables of routing information that describe available routes through the network. Each route defines a path between two locations on the network. Upon receiving an incoming data packet, the router examines header information within the packet to identify the destination for the packet. Based on the header information, the router accesses the routing table, selects an appropriate route for the packet and forwards the packet accordingly.
Conventional routers typically include a mechanism, referred to herein as a management interface, for directly or remotely configuring the router. By interacting with the management interface, various clients, such as human users and automated scripts, can perform numerous configuration tasks. For example, the clients may configure interface cards of the router, adjust parameters for the supported network protocols, specify the physical components within the routing device, modify the routing information maintained by the router, access software modules and other resources residing on the router, and the like.
In some routers, the management interface allows a client to configure the present configuration of the router using a commit-based model. In a commit-based model, a client issues one or more configuration commands, and then directs the management interface to apply the commands by issuing a “commit” command (alternatively, a “commit”). Typically, the client may direct the management interface to disregard the commands by issuing a “rollback” command.
For example, a client typically places the router in a configuration mode, often by issuing an edit command to the management interface. In this mode, the management interface may essentially “lock” the router, and reject any configuration commands from other clients. Next, the client typically issues a number of commands directing the management interface to modify the present configuration, followed by a commit command that directs the router to apply the configuration changes specified by the commands. Upon receiving the commit command, the management interface applies the changes to the present configuration, thereby adjusting the operation of the router. The management interface may then exit the configuration mode, effectively “unlocking” the router and allowing configuration by another client.”
As the complexity of computing networks has increased, there has been an increasing need for routers and other network devices to support concurrent configuration by multiple clients. Consequently, some devices allow multiple clients to concurrently issue configuration commands. In other words, the management interface of such a device does not “lock” the configuration of the device to a single client, but receives configuration commands from multiple clients while operating in the configuration mode. When the management interface receives a commit command from any of the clients providing commands, the management interface applies all of the pending changes from all of the concurrent clients to the present configuration. These techniques can be problematic in that partial changes made by a client may be committed in response to a commit command from another client. Furthermore, uncommitted changes made by a client may be lost when another client issues a “rollback” command.
As a result, routers have been adapted to provide for a private configuration mode in which a client may operate on a copy of the configuration data of the router separate from the current configuration data. When a commit is issued by the client in this private configuration mode, the router updates the current configuration data to reflect any changes made by the client to the copy of the configuration data without committing any other configuration changes to the configuration data by other clients. While in this private configuration mode, the router does not lock the actual configuration considering that the client is operating on a copy of the current configuration data. As a result, the router may enable multiple clients to operate concurrently in the private configuration mode, each of which may be operating on a separate copy of the configuration data.
While the private configuration mode may facilitate concurrent configuration of the router, the concurrent configuration mode may result in the router receiving multiple commit commands from multiple clients within a short period of time (if not, nearly concurrently). The router may store these commit commands to what may be referred to as a “commit queue” and process these commit commands sequentially in the order these commit commands were stored to the commit queue. Consequently, the router may not execute the commit command stored last in the commit queue for multiple seconds (or even minutes), resulting in significant delay that may detract from the user experience.